package com.dylan.历史.java8.lambda表达式.练习题.第6题;

/**
 * Created by Dylan on 2018/7/19.
 *
 * 作为 Runnable 的扩展,解决 Runnable 必须捕获异常的问题
 *
 * 接口定义一个类似 Runnable 中 run() 方法的方法,这是多了抛出异常
 * 然后在接口中定义一个静态方法,将该接口的实现转换为 Runnable 接口实现,并在其中捕获异常
 */
@FunctionalInterface
public interface RunnableExtend {

    void run() throws Exception;

    static Runnable uncheck(RunnableExtend ext) {
        return () -> {
            try {
                ext.run();
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        };
    }
}
